﻿Imports System.Threading

Public Class frmOferty

    Private mvarChanged As Boolean
    Private mvarChangedInfOferta As Boolean
    Private mvarCancel As Boolean = False
    Private mvarDbHolder As clsDataBase
    Private mvarI As Integer
    Private mvarPozycjeId As Integer
    Private mvarWyznEdycji As Boolean = False
    Private mvarWyznKopiowania As Boolean
    Private mvarWyznTylkoDoOdczytu As Boolean = False
    Private mvarWyznNowaOferta As Boolean
    Private mvarId As New DataTable
    Private mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej As Boolean
    Private mvarBlokowanie As clsRecordLock
    Private mvarOferta As clsInhOferta
    Private mvarStatusOfertyId As clsInhOferta
    Private mvarWysylkaOferty As clsWysylkaOferty
    Private mvarOfertaAdresEmail As clsOfertaAdresEmail
    Private mvarWysylkaOfertyChanged As Boolean


    Private mvarUzytkownik As clsUzytkownik
    Private mvarFrmSzukaniaKlienta As frmKlientSzukanie
    Private mvarFrmEmail As frmEmail

    Private mvarZmianyPozycjiOferty As clsInhPozycjaOferty



    Public Sub New()

        InitializeComponent()

        mvarChanged = False
        mvarWysylkaOfertyChanged = False
        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)
        mvarUzytkownik = clsUzytkownik.Instance()

        PobierzKlientow()
        PobierzSposobWysylkiOferty()
        PobierzWszystkieGatunkiMaterialu()
        PobierzWszystkieJednostki()
        PobierzStatusOferty()
        PobierzWszystkiePakowania()
        PobierzWszystkieWaluty()
        PobierzWszystkieMagazyny()

        mvarOferta = New clsInhOferta
        WyczyscInformacjePodstawowe()
        WyczyscPozycje()
        mvarChanged = False
        mvarChangedInfOferta = False
        mvarWyznNowaOferta = True

    End Sub

    Public Sub New(ByVal IdOferty As Integer, ByVal WyznKopiowania As Boolean)

        ' To wywołanie jest wymagane przez projektanta.
        InitializeComponent()

        ' Dodaj inicjację po wywołaniu funkcji InitializeComponent().
        mvarChanged = False
        mvarWysylkaOfertyChanged = False
        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)
        mvarUzytkownik = clsUzytkownik.Instance()
        mvarWyznKopiowania = WyznKopiowania

        PobierzKlientow()
        PobierzSposobWysylkiOferty()
        PobierzWszystkieGatunkiMaterialu()
        PobierzWszystkieJednostki()
        PobierzStatusOferty()
        PobierzWszystkiePakowania()
        PobierzWszystkieWaluty()
        PobierzWszystkieMagazyny()

        If IdOferty = 0 Then
            mvarOferta = New clsInhOferta
            WyczyscInformacjePodstawowe()
            WyczyscPozycje()
            mvarChanged = False
            mvarChangedInfOferta = False
            mvarWyznNowaOferta = True
            'cmdUtworzZlecenie.Enabled = False
        ElseIf IdOferty > 0 Then
            mvarOferta = New clsInhOferta(IdOferty, mvarDbHolder)
            OfertaEdycja(IdOferty, WyznKopiowania)
        End If


    End Sub

#Region "Pobierz"

    Private Sub PobierzKlientow()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsKlient.PobierzWszystkichKlientow(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbKlient.Items.Add(New clsKlient(CInt(lvarRow("id")), IIf(IsDBNull(lvarRow("nazwa_pelna")), "", lvarRow("nazwa_pelna")).ToString(), IIf(IsDBNull(lvarRow("nazwa_skrocona")), "", lvarRow("nazwa_skrocona")).ToString(), IIf(IsDBNull(lvarRow("ulica")), "", lvarRow("ulica")).ToString(), IIf(IsDBNull(lvarRow("numer")), "", lvarRow("numer")).ToString(), IIf(IsDBNull(lvarRow("kod_pocztowy")), "", lvarRow("kod_pocztowy")).ToString(), IIf(IsDBNull(lvarRow("miejscowosc")), "", lvarRow("miejscowosc")).ToString(), IIf(IsDBNull(lvarRow("kraj")), "", lvarRow("kraj")).ToString(), IIf(IsDBNull(lvarRow("telefon")), "", lvarRow("telefon")).ToString(), IIf(IsDBNull(lvarRow("e_mail")), "", lvarRow("e_mail")).ToString(), IIf(IsDBNull(lvarRow("nip")), "", lvarRow("nip")).ToString(), IIf(IsDBNull(lvarRow("etykieta")), "", lvarRow("etykieta")).ToString(), IIf(IsDBNull(lvarRow("wysylka")), "", lvarRow("wysylka")).ToString(), IIf(IsDBNull(lvarRow("termin_platnosci")), "", lvarRow("termin_platnosci")).ToString(), IIf(IsDBNull(lvarRow("uwagi")), "", lvarRow("uwagi")).ToString()))
            Next
        End If

    End Sub

    Private Sub PobierzSposobWysylkiOferty()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsSposobWysylkiOferty.PobierzWszystkieOpcje(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbSposobWysylkiOferty.Items.Add(New clsSposobWysylkiOferty(CInt(lvarRow("id")), CType(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa")), String)))
            Next
        End If

    End Sub

    Private Sub PobierzStatusOferty()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsStatusOferty.PobierzWszystkieOpcje(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                Select Case CInt(lvarRow("id"))
                    Case 1 To 4
                        cmbStatusOferty.Items.Add(New clsStatusOferty(CInt(lvarRow("id")), CType(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa")), String)))
                End Select
            Next
        End If

    End Sub

    Private Sub PobierzWszystkieGatunkiMaterialu()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsGatunek.PobierzWszystkieGatunki(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbMaterial.Items.Add(New clsGatunek(CInt(lvarRow("id")), IIf(IsDBNull(lvarRow("nazwa_ang")), "", lvarRow("nazwa_ang")).ToString(), IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa")).ToString(), IIf(IsDBNull(lvarRow("nazwa_niem")), "", lvarRow("nazwa_niem")).ToString(), IIf(IsDBNull(lvarRow("norma_wykonania")), "", lvarRow("norma_wykonania")).ToString(), IIf(IsDBNull(lvarRow("stop_id")), -1, lvarRow("stop_id")).ToString()))
            Next
        End If

    End Sub

    Private Sub PobierzWszystkieJednostki()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsJednostkaMiary.PobierzWszystkieJednostki(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbJednostka.Items.Add(New clsJednostkaMiary(CInt(lvarRow("id")), CType(IIf(IsDBNull(lvarRow("jednostka")), "", lvarRow("jednostka")), String)))
            Next
        End If

    End Sub

    Private Sub PobierzWszystkiePakowania()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsPakowanie.PobierzWszystkieOpcje(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbPakowanie.Items.Add(New clsPakowanie(lvarRow("id").ToString(), CType(IIf(IsDBNull(lvarRow("nazwa")), String.Empty, lvarRow("nazwa")), String), CType(IIf(IsDBNull(lvarRow("cena")), 0, lvarRow("cena")), Double), CType(IIf(IsDBNull(lvarRow("waga")), 0, lvarRow("waga")), Double)))
            Next
        End If

    End Sub

    Private Sub PobierzWszystkieWaluty()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsWaluta.PobierzWszystkieOpcje(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbWaluta.Items.Add(New clsWaluta(lvarRow("id").ToString(), CType(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa")), String)))
            Next
        End If

    End Sub

    Private Sub PobierzEmail(ByVal KlientId As Integer)

        Dim lvarDataTable As New DataTable
        mvarI = 0
        lvarDataTable = clsEmail.PobierzWszystkieEmail(mvarDbHolder, KlientId, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                mvarI = mvarI + 1
                cmbAdresWysylkiOferty.Items.Add(New clsEmail(CInt(lvarRow("id")), CType(IIf(IsDBNull(lvarRow("klient_id")), "", lvarRow("klient_id")), Integer), CType(IIf(IsDBNull(lvarRow("email")), "", lvarRow("email")), String)))
            Next
        End If

    End Sub

    Private Sub PobierzWszystkieMagazyny()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsMagazyn.PobierzWszystkieOpcje(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbMagazyn.Items.Add(New clsMagazyn(CInt(lvarRow("id")), CType(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa")), String)))
            Next
        End If

    End Sub

#End Region

    Private Sub Blokowanie()
        grbTylkoDoOdczytu.Visible = True
        grbInformacjePodstawowePr.Size = New Size(374, 179)
        grbInformacjePodstawowe.Enabled = False
        grbDanePozycjiOferty.Enabled = False
        pnlPrzyciskiEdycji.Enabled = False
        cmdZapisz.Enabled = False
        cmdWyslijOferte.Enabled = False
        mvarWyznTylkoDoOdczytu = True
    End Sub

    Private Sub UzupelnienieDanych(ByVal WyznKopiowania As Boolean)

        Dim lvarIndex As Integer

        lvarIndex = cmbKlient.FindString(mvarOferta.Klient.NazwaSkrocona)
        cmbKlient.SelectedIndex = lvarIndex
        txtNazwaPelna.Text = "Nazwa: " & mvarOferta.Klient.NazwaPelna & vbNewLine & "Nazwa skrócona: " & mvarOferta.Klient.NazwaSkrocona & vbNewLine & "NIP: " & mvarOferta.Klient.Nip & vbNewLine & "Termin płatności: " & mvarOferta.Klient.TerminPlatnosci & vbNewLine & "Sposób wysyłki: " & mvarOferta.Klient.Wysylka & vbNewLine & "Adres: " & Trim(mvarOferta.Klient.Ulica) & " " & Trim(mvarOferta.Klient.Numer) & ", " & mvarOferta.Klient.KodPocztowy & " " & Trim(mvarOferta.Klient.Miejscowosc) & ", " & mvarOferta.Klient.Kraj & vbNewLine & "Telefon: " & mvarOferta.Klient.Telefon & vbNewLine & "Email: " & mvarOferta.Klient.Email

        dtpDataOferty.Value = mvarOferta.DataOferty
        dtpDataWaznosci.Value = mvarOferta.DataWaznosci
        lvarIndex = cmbSposobWysylkiOferty.FindString(mvarOferta.SposobWysylkiOferty.Nazwa)
        cmbSposobWysylkiOferty.SelectedIndex = lvarIndex
        txtUwagiOferty.Text = mvarOferta.Uwagi
        txtCzasRealizacji.Text = mvarOferta.CzasRealizacji
        txtPracownik.Text = mvarOferta.Pracownik.Nazwisko
        lvarIndex = cmbAdresWysylkiOferty.FindString(mvarOferta.Email.Email)
        If mvarOferta.EmailId = -1 Then
            cmbAdresWysylkiOferty.SelectedIndex = 0
        Else
            cmbAdresWysylkiOferty.SelectedIndex = lvarIndex
        End If

        If WyznKopiowania Then
            txtNumerOferty.Text = "NOWA OFERTA"
            txtPracownik.Text = mvarUzytkownik.Nazwisko
            txtDataKontaktu.Text = String.Empty
            dtpDataOferty.Value = Today.Date
            dtpDataWaznosci.Value = Today.Date
            cmbStatusOferty.SelectedIndex = 0
            cmbStatusOferty.Enabled = False
            mvarOferta.ZlecenieId = -1
        Else
            mvarWyznEdycji = True
            Me.Text = "WIREMET - EDYCJA OFERTY"
            txtNumerOferty.Text = mvarOferta.Numer
            Szukanie_wysylki(mvarOferta.ID)


            lvarIndex = cmbStatusOferty.FindString(mvarOferta.StatusOferty_Id.Nazwa)
            cmbStatusOferty.SelectedIndex = lvarIndex
            cmbStatusOferty.Enabled = True
            txtPracownik.Text = mvarUzytkownik.Nazwisko
        End If
        'Uzupelnienie pozycji oferty
        WyczyscPozycje()
        mvarI = 0

        For Each lvarPozycja As clsInhPozycjaOferty In mvarOferta.PozycjeOferty
            mvarI += 1
            dgvInformacje.Rows.Add(mvarI, lvarPozycja.PowierzonyMaterial, lvarPozycja.MaterialOgolnie.NazwaAng, lvarPozycja.Wymiar, lvarPozycja.TolDolna, lvarPozycja.TolGorna, lvarPozycja.Wydluzenie, lvarPozycja.WytrzymaloscMin, lvarPozycja.WytrzymaloscMax, lvarPozycja.Ilosc, lvarPozycja.Jednostka.Jednostka, lvarPozycja.Pakowaie.Nazwa, lvarPozycja.CenaOpakowania, FormatowanieLiczby(lvarPozycja.Cena), lvarPozycja.Rabat, lvarPozycja.Waluta.Nazwa, lvarPozycja.Magazyn.Nazwa, lvarPozycja.Swiadectwo, lvarPozycja.Uwagi)
            dgvInformacje.Rows(mvarI - 1).Tag = lvarPozycja

        Next
        If dgvInformacje.Rows.Count > 0 Then
            dgvInformacje.ClearSelection()
        End If
        If WyznKopiowania Then
            mvarOferta.ID = -1
            For Each lvarRow As DataGridViewRow In dgvInformacje.Rows
                CType(lvarRow.Tag, clsInhPozycjaOferty).Id = -1
                CType(lvarRow.Tag, clsInhPozycjaOferty).OfertaId = -1
            Next
        End If

    End Sub

    Private Sub WyczyscInformacjePodstawowe()

        cmbKlient.SelectedIndex = -1
        dtpDataOferty.Value = Now
        dtpDataWaznosci.Value = Now
        txtDataKontaktu.Text = ""
        cmbSposobWysylkiOferty.SelectedIndex = 0
        txtUwagiOferty.Text = String.Empty
        txtNumerOferty.Text = "NOWA OFERTA"
        cmbStatusOferty.SelectedIndex = 0
        cmbAdresWysylkiOferty.Items.Clear()
        txtPracownik.Text = mvarUzytkownik.Nazwisko

    End Sub

    Private Sub WyczyscPozycje()

        chkPowierzony.Checked = False
        cmbMaterial.SelectedIndex = -1
        txtWymiar.Text = String.Empty
        txtTolDolna.Text = String.Empty
        txtTolGorna.Text = String.Empty
        txtWytrzymaloscMin.Text = String.Empty
        txtWytrzymaloscMax.Text = String.Empty
        txtWydluzenie.Text = String.Empty
        txtIlosc.Text = String.Empty
        cmbJednostka.SelectedIndex = 0
        chkSwiadectwo.Checked = False
        txtCena.Text = "0,00"
        txtCenaPoRabacie.Text = "0,00"
        txtRabat.Text = String.Empty
        txtUwagi.Text = String.Empty
        cmbPakowanie.SelectedIndex = -1
        txtCenaPakowania.Text = "0,00"
        cmbWaluta.SelectedIndex = 1
        chkOpakowanieDoZaplaty.Checked = False
        cmbMagazyn.SelectedIndex = -1

    End Sub


    Private Sub dgvInformacje_CellMouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgvInformacje.CellMouseClick
        Dim lvarIndex As Integer

        If dgvInformacje.SelectedRows.Count > 0 Then
            WyczyscPozycje()
            mvarPozycjeId = dgvInformacje.CurrentRow.Index
            chkPowierzony.Checked = CBool(dgvInformacje.SelectedRows.Item(0).Cells("colInfPowierzonyMaterial").Value)
            lvarIndex = cmbMaterial.FindString(dgvInformacje.SelectedRows.Item(0).Cells("colInfMaterial").Value.ToString())
            cmbMaterial.SelectedIndex = lvarIndex
            txtWymiar.Text = dgvInformacje.SelectedRows.Item(0).Cells("colInfWymiar").Value.ToString()
            txtTolDolna.Text = dgvInformacje.SelectedRows.Item(0).Cells("colInfTolDolna").Value.ToString()
            txtTolGorna.Text = dgvInformacje.SelectedRows.Item(0).Cells("colInfTolGorna").Value.ToString()
            txtWytrzymaloscMin.Text = dgvInformacje.SelectedRows.Item(0).Cells("colInfWytrzymaloscMin").Value.ToString()
            txtWytrzymaloscMax.Text = dgvInformacje.SelectedRows.Item(0).Cells("colInfWytrzymaloscMax").Value.ToString()
            txtWydluzenie.Text = dgvInformacje.SelectedRows.Item(0).Cells("colInfWydluzenie").Value.ToString()
            txtIlosc.Text = dgvInformacje.SelectedRows.Item(0).Cells("colInfIlosc").Value.ToString()
            lvarIndex = cmbJednostka.FindString(dgvInformacje.SelectedRows.Item(0).Cells("colInfJednostka").Value.ToString())
            cmbJednostka.SelectedIndex = lvarIndex
            chkSwiadectwo.Checked = CBool(dgvInformacje.SelectedRows.Item(0).Cells("colInfSwiadectwo").Value)
            txtCena.Text = dgvInformacje.SelectedRows.Item(0).Cells("colInfCena").Value.ToString()
            txtRabat.Text = dgvInformacje.SelectedRows.Item(0).Cells("colInfRabat").Value.ToString()
            txtCenaPoRabacie.Text = CStr(CDbl(txtCena.Text) - (CDbl(txtRabat.Text) * CDbl(txtCena.Text)) / 100)
            txtUwagi.Text = dgvInformacje.SelectedRows.Item(0).Cells("colInfUwagi").Value.ToString()


            lvarIndex = cmbPakowanie.FindString(dgvInformacje.SelectedRows.Item(0).Cells("colInfPakowanie").Value.ToString())
            cmbPakowanie.SelectedIndex = lvarIndex


            chkOpakowanieDoZaplaty.Checked = CType(dgvInformacje.SelectedRows.Item(0).Tag, clsInhPozycjaOferty).CenaOpakowania
            lvarIndex = cmbWaluta.FindString(dgvInformacje.SelectedRows.Item(0).Cells("colInfWaluta").Value.ToString())
            cmbWaluta.SelectedIndex = lvarIndex
            lvarIndex = cmbMagazyn.FindString(dgvInformacje.SelectedRows.Item(0).Cells("colInfMagazyn").Value.ToString())
            cmbMagazyn.SelectedIndex = lvarIndex

            cmdZmien.Enabled = True
            cmdUsun.Enabled = True


        End If
    End Sub

    Private Sub cmdDodajPozycjeOferty_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDodajPozycjeOferty.Click

        Dim lvarCena As String
        Dim lvarCenaPakowania As String
        lvarCena = Replace(txtCena.Text, ",", ".")
        lvarCenaPakowania = Replace(txtCenaPakowania.Text, ",", ".")

        If Not Sprawdz(txtWymiar.Text) Or Not SprawdzUjemna(txtTolGorna.Text) Or Not SprawdzUjemna(txtTolDolna.Text) Or Not Sprawdz(txtWytrzymaloscMin.Text) Or Not Sprawdz(txtWytrzymaloscMax.Text) Or Not Sprawdz(txtWydluzenie.Text) Or cmbMaterial.SelectedIndex = -1 Or Not Sprawdz(txtIlosc.Text) Or cmbJednostka.SelectedIndex = -1 Or cmbPakowanie.SelectedIndex = -1 Or Not Sprawdz(txtCenaPakowania.Text) Or cmbWaluta.SelectedIndex = -1 Or Not Sprawdz(txtCena.Text) Or cmbMagazyn.SelectedIndex = -1 Or Not Sprawdz(txtRabat.Text) Then
            MessageBox.Show("Wpisz poprawnie dane.", "WIREMET")
            cmbMaterial.Focus()
        Else
            mvarI = dgvInformacje.Rows.Count

            Dim lvarNowaPozycja As New clsInhPozycjaOferty()
            With lvarNowaPozycja
                .OfertaId = mvarOferta.ID
                .NumerPozycji = CStr(mvarI + 1)
                .PowierzonyMaterial = chkPowierzony.Checked
                .GatunekId = CType(cmbMaterial.SelectedItem, clsGatunek).Id
                .Wymiar = Trim(txtWymiar.Text)
                .TolDolna = Trim(txtTolDolna.Text)
                .TolGorna = Trim(txtTolGorna.Text)
                .Wydluzenie = Trim(txtWydluzenie.Text)
                .WytrzymaloscMin = Trim(txtWytrzymaloscMin.Text)
                .WytrzymaloscMax = Trim(txtWytrzymaloscMax.Text)
                .Ilosc = Trim(txtIlosc.Text)
                .JednostkaMiaryId = CType(cmbJednostka.SelectedItem, clsJednostkaMiary).Id
                .PakowaniaId = CInt(CType(cmbPakowanie.SelectedItem, clsPakowanie).Id)
                .CenaOpakowania = chkOpakowanieDoZaplaty.Checked
                .Cena = Trim(lvarCena)
                .Rabat = CInt(txtRabat.Text.Trim())
                .WalutaId = CInt(CType(cmbWaluta.SelectedItem, clsWaluta).Id)
                .MagazynId = CType(cmbMagazyn.SelectedItem, clsMagazyn).Id
                .Swiadectwo = chkSwiadectwo.Checked
                .Uwagi = Trim(txtUwagi.Text)

            End With
            dgvInformacje.Rows.Add(mvarI + 1, chkPowierzony.Checked, CType(cmbMaterial.SelectedItem, clsGatunek).Nazwa, Trim(txtWymiar.Text), Trim(txtTolDolna.Text), Trim(txtTolGorna.Text), Trim(txtWydluzenie.Text), Trim(txtWytrzymaloscMin.Text), Trim(txtWytrzymaloscMax.Text), Trim(txtIlosc.Text), CType(cmbJednostka.SelectedItem, clsJednostkaMiary).Jednostka, CType(cmbPakowanie.SelectedItem, clsPakowanie).Nazwa, chkOpakowanieDoZaplaty.Checked, Trim(txtCena.Text), Trim(txtRabat.Text), CType(cmbWaluta.SelectedItem, clsWaluta).Nazwa, CType(cmbMagazyn.SelectedItem, clsMagazyn).Nazwa, chkSwiadectwo.Checked, Trim(txtUwagi.Text))
            dgvInformacje.Rows(mvarI).Tag = lvarNowaPozycja
            WyczyscPozycje()

            If dgvInformacje.Rows.Count > 0 Then
                dgvInformacje.ClearSelection()
                dgvInformacje.Rows(dgvInformacje.Rows.Count - 1).Selected = True
                If dgvInformacje.Rows.Count > 3 Then
                    dgvInformacje.FirstDisplayedScrollingRowIndex = dgvInformacje.Rows.Count - 3
                Else
                    dgvInformacje.FirstDisplayedScrollingRowIndex = 0
                End If
            End If

            cmbMaterial.Focus()
            dgvInformacje.ClearSelection()
            cmdZmien.Enabled = False
            cmdUsun.Enabled = False
            mvarChanged = True
        End If
        cmdZapisz.Enabled = True

    End Sub

    Private Sub cmdZmien_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdZmien.Click
        If Not Sprawdz(txtWymiar.Text) Or Not SprawdzUjemna(txtTolGorna.Text) Or Not SprawdzUjemna(txtTolDolna.Text) Or Not Sprawdz(txtWytrzymaloscMin.Text) Or Not Sprawdz(txtWytrzymaloscMax.Text) Or Not Sprawdz(txtWydluzenie.Text) Or cmbMaterial.SelectedIndex = -1 Or Not Sprawdz(txtIlosc.Text) Or cmbJednostka.SelectedIndex = -1 Or cmbPakowanie.SelectedIndex = -1 Or Not Sprawdz(txtCenaPakowania.Text) Or cmbWaluta.SelectedIndex = -1 Or Not Sprawdz(txtCena.Text) Or cmbMagazyn.SelectedIndex = -1 Then
            MessageBox.Show("Wpisz poprawnie dane", "WIREMET")
        Else
            With CType(dgvInformacje.SelectedRows.Item(0).Tag, clsInhPozycjaOferty)
                .OfertaId = mvarOferta.ID
                .NumerPozycji = CStr(mvarI + 1)
                .PowierzonyMaterial = chkPowierzony.Checked
                .GatunekId = CType(cmbMaterial.SelectedItem, clsGatunek).Id
                .Wymiar = Trim(txtWymiar.Text)
                .TolDolna = Trim(txtTolDolna.Text)
                .TolGorna = Trim(txtTolGorna.Text)
                .Wydluzenie = Trim(txtWydluzenie.Text)
                .WytrzymaloscMin = Trim(txtWytrzymaloscMin.Text)
                .WytrzymaloscMax = Trim(txtWytrzymaloscMax.Text)
                .Ilosc = Trim(txtIlosc.Text)
                .JednostkaMiaryId = CType(cmbJednostka.SelectedItem, clsJednostkaMiary).Id
                .PakowaniaId = CInt(CType(cmbPakowanie.SelectedItem, clsPakowanie).Id)
                .CenaOpakowania = chkOpakowanieDoZaplaty.Checked
                .Cena = Replace(txtCena.Text, ",", ".")
                .Rabat = CInt(txtRabat.Text.Trim())
                .WalutaId = CInt(CType(cmbWaluta.SelectedItem, clsWaluta).Id)
                .MagazynId = CType(cmbMagazyn.SelectedItem, clsMagazyn).Id
                .Swiadectwo = chkSwiadectwo.Checked
                .Uwagi = Trim(txtUwagi.Text)
            End With

            With dgvInformacje.Rows.Item(mvarPozycjeId)
                .Cells("colInfPowierzonyMaterial").Value = chkPowierzony.Checked
                .Cells("colInfMaterial").Value = CType(cmbMaterial.SelectedItem, clsGatunek).Nazwa
                .Cells("colInfWymiar").Value = Trim(txtWymiar.Text)
                .Cells("colInfTolDolna").Value = Trim(txtTolDolna.Text)
                .Cells("colInfTolGorna").Value = Trim(txtTolGorna.Text)
                .Cells("colInfWytrzymaloscMin").Value = Trim(txtWytrzymaloscMin.Text)
                .Cells("colInfWytrzymaloscMax").Value = Trim(txtWytrzymaloscMax.Text)
                .Cells("colInfWydluzenie").Value = Trim(txtWydluzenie.Text)
                .Cells("colInfIlosc").Value = Trim(txtIlosc.Text)
                .Cells("colInfJednostka").Value = CType(cmbJednostka.SelectedItem, clsJednostkaMiary).Jednostka
                .Cells("colInfSwiadectwo").Value = chkSwiadectwo.Checked
                .Cells("colInfCena").Value = Trim(txtCena.Text)
                .Cells("colInfRabat").Value = Trim(txtRabat.Text)
                .Cells("colInfUwagi").Value = Trim(txtUwagi.Text)
                .Cells("colInfPakowanie").Value = CType(cmbPakowanie.SelectedItem, clsPakowanie).Nazwa
                .Cells("colInfOplataZaOpakowanie").Value = chkOpakowanieDoZaplaty.Checked
                .Cells("colInfWaluta").Value = CType(cmbWaluta.SelectedItem, clsWaluta).Nazwa
                .Cells("colInfMagazyn").Value = CType(cmbMagazyn.SelectedItem, clsMagazyn).Nazwa
                
            End With

            cmdZmien.Enabled = False
            cmdUsun.Enabled = False
            mvarChanged = True
            WyczyscPozycje()
            dgvInformacje.ClearSelection()
        End If

    End Sub

    Private Sub cmdUsun_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdUsun.Click

        Dim lvarIndexPoczatkowy As Integer
        Dim lvarPozycjeWysylki As New clsInhPozycjeWysylki
        If dgvInformacje.Rows.Count = 1 Then
            MessageBox.Show("Nie można usunąć wszystkich pozycji", "WIREMET")
        ElseIf dgvInformacje.Rows.Count > 0 Then
            'dgvInformacje.Rows.Remove(dgvInformacje.CurrentRow)
            'dgvInformacje.ClearSelection()
            'mvarChanged = True

            lvarIndexPoczatkowy = dgvInformacje.CurrentRow.Index
            mvarOferta.PozycjeOfertyDel.Add(CType(dgvInformacje.CurrentRow.Tag, clsInhPozycjaOferty))

            dgvInformacje.Rows.Remove(dgvInformacje.CurrentRow)
            For lvarI As Integer = lvarIndexPoczatkowy To dgvInformacje.Rows.Count - 1
                dgvInformacje.Rows.Item(lvarI).Cells("colInfLp").Value = CInt(dgvInformacje.Rows.Item(lvarI).Cells("colInfLp").Value) - 1
            Next
            dgvInformacje.ClearSelection()
            cmdUsun.Enabled = False
            cmbMaterial.Focus()
            mvarChanged = True

        End If

    End Sub

    Private Sub cmdWyczysc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdWyczysc.Click
        WyczyscPozycje()
    End Sub


    Private Sub Szukanie_wysylki(ByVal IdOferty As Integer)

        Dim lvarDataTable As New DataTable
        lvarDataTable = clsWysylkaOferty.PobierzWysylki(mvarDbHolder, IdOferty, VAR_ERROR_HANDLER)
        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                txtDataKontaktu.Text = CType(IIf(IsDBNull(lvarRow("data_wysylki")), String.Empty, lvarRow("data_wysylki")), String)
            Next
        End If

    End Sub


    Function Sprawdz(ByVal Liczba As String) As Boolean

        If Liczba <> String.Empty And IsNumeric(Liczba) Then
            If CDbl(Liczba) >= 0 Then
                Return True
            Else
                Return False
            End If
        Else
            Return False
        End If

    End Function

    Private Sub cmdZapisz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdZapisz.Click
        If mvarChanged Or mvarWyznKopiowania Then
            Select Case MsgBox("Czy zapisać zmiany do bazy?", MsgBoxStyle.YesNo, "WIREMET")
                Case MsgBoxResult.No
                    WyczyscInformacjePodstawowe()
                    WyczyscPozycje()
                    dgvInformacje.Rows.Clear()
                    If mvarOferta.ID > -1 Then
                        UzupelnienieDanych(mvarWyznKopiowania)
                    End If
                    mvarChanged = False
                    mvarWysylkaOfertyChanged = False
                Case MsgBoxResult.Yes
                    Zapisz()
            End Select
        Else
            MessageBox.Show("Nie wprowadzono żadnych zmian.", "WIREMET")
        End If

    End Sub

    Private Sub Zapisz()

        If dgvInformacje.Rows.Count = 0 Or cmbKlient.SelectedIndex = -1 Then
            MessageBox.Show("Jeśli chcesz zapisać ofertę do bazy podaj wszystkie konieczne informacje?", "WIREMET")
            mvarCancel = True
        Else
            If cmbKlient.SelectedIndex = -1 Or cmbSposobWysylkiOferty.SelectedIndex = -1 Or cmbAdresWysylkiOferty.SelectedIndex = -1 Or txtCzasRealizacji.Text = String.Empty Then
                MessageBox.Show("Podaj wszystkie informacje podstawowe!", "WIREMET")
            Else
                If mvarOferta.ID = -1 Then
                    mvarOferta.Numer = clsNumerOferty.PobierzNumerOferty(mvarDbHolder, VAR_ERROR_HANDLER)
                End If
                mvarDbHolder.BeginTrans()
                With mvarOferta
                    .KlientId = CType(cmbKlient.SelectedItem, clsKlient).Id
                    .PracownikId = mvarUzytkownik.Id
                    .SposobWysylkiOfertyId = CType(cmbSposobWysylkiOferty.SelectedItem, clsSposobWysylkiOferty).Id
                    .DataOferty = dtpDataOferty.Value
                    .DataWaznosci = dtpDataWaznosci.Value
                    .CzasRealizacji = txtCzasRealizacji.Text
                    .StatusOfertyId = CType(cmbStatusOferty.SelectedItem, clsStatusOferty).Id
                    .Uwagi = txtUwagiOferty.Text
                    If cmbAdresWysylkiOferty.SelectedIndex > 0 Then
                        .EmailId = CType(cmbAdresWysylkiOferty.SelectedItem, clsEmail).Id
                    Else

                    End If
                    .PozycjeOferty.Clear()
                    For Each lvarRow As DataGridViewRow In dgvInformacje.Rows
                        .PozycjeOferty.Add(CType(lvarRow.Tag, clsInhPozycjaOferty))
                    Next
                    .Save(mvarDbHolder)
                End With
                If mvarWysylkaOfertyChanged Then
                    Dim mvarOfertaId As Integer
                    Dim mvarWysylkaOferty As New clsWysylkaOferty
                    mvarOfertaId = mvarOferta.ID
                    With mvarWysylkaOferty
                        .ID = mvarWysylkaOferty.ID
                        .OfertaId = mvarOfertaId
                        .PracownikID = mvarUzytkownik.Id
                        .DataWysylki = Now
                        .Save(mvarDbHolder, VAR_ERROR_HANDLER)
                    End With
                End If
                mvarDbHolder.CommitTrans()

                WyczyscInformacjePodstawowe()
                WyczyscPozycje()
                dgvInformacje.Rows.Clear()
                mvarOferta = New clsInhOferta(mvarOferta.ID, mvarDbHolder)
                mvarWyznKopiowania = False
                UzupelnienieDanych(mvarWyznKopiowania)
                mvarChanged = False
                mvarWysylkaOfertyChanged = False
                MessageBox.Show("Zapisano do bazy.", "WIREMET")
                mvarCancel = False
            End If
        End If

    End Sub


    Private Sub cmdZamknij_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdZamknij.Click
        If mvarChanged Or mvarWysylkaOfertyChanged Then
            Select Case MsgBox("Czy zapisać zmiany do bazy?", MsgBoxStyle.YesNo, "WIREMET")
                Case MsgBoxResult.No
                    WyczyscInformacjePodstawowe()
                    WyczyscPozycje()
                    dgvInformacje.Rows.Clear()
                    If mvarOferta.ID > -1 Then
                        UzupelnienieDanych(mvarWyznKopiowania)
                    End If
                    mvarChanged = False
                Case MsgBoxResult.Yes
                    Zapisz()
            End Select
        End If
        Me.Close()
    End Sub

    Private Sub txtCenaPakowania_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCenaPakowania.DoubleClick
        If cmbPakowanie.SelectedIndex > -1 And mvarUzytkownik.Uprawnienia("biuro") <> 1 Then

            Dim lvarFrm As New frmPakowanieSzukanie(True, CInt(CType(cmbPakowanie.SelectedItem, clsPakowanie).Id))
            With lvarFrm
                .Location = New Point(300, 300)
                .ShowDialog()
            End With
            cmbPakowanie.Items.Clear()
            PobierzWszystkiePakowania()
            For lvarI As Integer = 0 To cmbPakowanie.Items.Count - 1
                If CType(cmbPakowanie.Items(lvarI), clsPakowanie).Id = lvarFrm.dgvInformacje.SelectedRows.Item(0).Cells("colIdPakowania").Value.ToString() Then
                    cmbPakowanie.SelectedIndex = lvarI
                    txtCenaPakowania.Text = CType(cmbPakowanie.SelectedItem, clsPakowanie).Cena
                    cmbPakowanie.Focus()
                    Exit For
                End If
            Next
        End If
    End Sub

    Function SprawdzUjemna(ByVal Liczba As String) As Boolean

        If Liczba <> String.Empty And IsNumeric(Liczba) Then
            Return True
        Else
            Return False
        End If

    End Function

    Function FormatowanieLiczby(ByVal Liczba As String) As String

        Dim lvarWynik As String
        Dim lvarTmp As String

        lvarTmp = Replace(Liczba, ".", ",")
        If CBool(InStr(lvarTmp, ",")) Then
            If InStr(lvarTmp, ",") + 2 <= lvarTmp.Length Then
                lvarWynik = lvarTmp.Substring(0, InStr(lvarTmp, ",") + 2)
            Else
                lvarWynik = lvarTmp & "0"
            End If
        Else
            lvarWynik = lvarTmp & ",00"
        End If
        Return lvarWynik

    End Function

    Private Sub SprawdzLiczbeZmiennoprzecinkowa(ByVal Liczba1 As String)

        If Liczba1 <> String.Empty And IsNumeric(Liczba1) Then
            If CDbl(Liczba1) > 0 Then
                mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej = True
            Else
                mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej = False
            End If
        Else
            mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej = False
        End If

    End Sub

    Private Sub OfertaEdycja(ByVal IdOferty As Integer, ByVal WyznKopiowania As Boolean)

        If mvarUzytkownik.Uprawnienia("biuro") = 10 Or mvarUzytkownik.Uprawnienia("biuro") = 1 Then
            grbTylkoDoOdczytu.Visible = True
            grbInformacjePodstawowePr.Size = New Size(374, 179)
            grbInformacjePodstawowe.Enabled = False
            grbDanePozycjiOferty.Enabled = False
            pnlPrzyciskiEdycji.Enabled = False
            cmdZapisz.Enabled = False
            cmdWyslijOferte.Enabled = False
            mvarWyznTylkoDoOdczytu = True
            cmdUtworzZlecenie.Enabled = True
        Else
            mvarBlokowanie = New clsRecordLock(VAR_CONNECTION_PARAMETERS, IdOferty, "oem.oferta", VAR_ERROR_HANDLER, CInt(mvarUzytkownik.Id))
            mvarWyznTylkoDoOdczytu = False
            cmbStatusOferty.Enabled = True
            If Not mvarBlokowanie.RecordLocked Then
                MessageBox.Show("TYLKO DO ODCZYTU", "WIREMET")
                Blokowanie()
            End If
        End If
        UzupelnienieDanych(WyznKopiowania)
        mvarChanged = False
    End Sub

    Private Sub OfertaNowa(ByVal IdOferty As Integer, ByVal WyznKopiowania As Boolean)

        If mvarUzytkownik.Uprawnienia("biuro") = 10 Or mvarUzytkownik.Uprawnienia("biuro") = 1 Then
            grbTylkoDoOdczytu.Visible = True
            grbInformacjePodstawowe.Size = New Size(374, 179)
            grbInformacjePodstawowe.Enabled = False
            grbDanePozycjiOferty.Enabled = False
            pnlPrzyciskiEdycji.Enabled = False
            cmdZapisz.Enabled = False
            cmdWyslijOferte.Enabled = True
            mvarWyznTylkoDoOdczytu = True
        Else
            mvarBlokowanie = New clsRecordLock(VAR_CONNECTION_PARAMETERS, IdOferty, "oem.oferta", VAR_ERROR_HANDLER, CInt(mvarUzytkownik.Id))
            mvarWyznTylkoDoOdczytu = False
            cmbStatusOferty.Enabled = True
            If Not mvarBlokowanie.RecordLocked Then
                MessageBox.Show("TYLKO DO ODCZYTU NOWE", "WIREMET")
                Blokowanie()
            End If
        End If
        UzupelnienieDanych(WyznKopiowania)
        mvarChanged = False
    End Sub

    Private Sub UtworzoneZlecenie(ByVal IdOferty As Integer, ByVal WyznKopiowania As Boolean)

        If mvarUzytkownik.Uprawnienia("biuro") = 1 Then
            grbTylkoDoOdczytu.Visible = True
            grbInformacjePodstawowePr.Size = New Size(374, 179)
            grbInformacjePodstawowe.Enabled = False
            grbDanePozycjiOferty.Enabled = False
            pnlPrzyciskiEdycji.Enabled = False
            cmdZapisz.Enabled = False
            cmdWyslijOferte.Enabled = False
            cmdUtworzZlecenie.Enabled = False
            mvarWyznTylkoDoOdczytu = True
        Else
            mvarBlokowanie = New clsRecordLock(VAR_CONNECTION_PARAMETERS, IdOferty, "oem.oferta", VAR_ERROR_HANDLER, CInt(mvarUzytkownik.Id))
            mvarWyznTylkoDoOdczytu = False
            cmbStatusOferty.Enabled = True

            If Not mvarBlokowanie.RecordLocked Then
                MessageBox.Show("TYLKO DO ODCZYTU", "WIREMET")
                Blokowanie()
            End If
        End If
        UzupelnienieDanych(WyznKopiowania)
        mvarChanged = False


    End Sub


#Region "Changed"

    Private Sub cmbKlient_TextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles cmbKlient.TextChanged
        mvarChanged = True
        mvarChangedInfOferta = True

        If cmbKlient.SelectedIndex = -1 Then
            txtNazwaPelna.Text = String.Empty
        Else
            cmbAdresWysylkiOferty.Items.Clear()
            txtNazwaPelna.Text = CType(cmbKlient.SelectedItem, clsKlient).NazwaPelna
            txtNazwaPelna.Text = "Nazwa: " & CType(cmbKlient.SelectedItem, clsKlient).NazwaPelna & vbNewLine & "Nazwa skrócona: " & CType(cmbKlient.SelectedItem, clsKlient).NazwaSkrocona & vbNewLine & "NIP: " & CType(cmbKlient.SelectedItem, clsKlient).Nip & vbNewLine & "Termin płatności: " & CType(cmbKlient.SelectedItem, clsKlient).TerminPlatnosci & vbNewLine & "Sposób wysyłki: " & CType(cmbKlient.SelectedItem, clsKlient).Wysylka & vbNewLine & "Adres: " & Trim(CType(cmbKlient.SelectedItem, clsKlient).Ulica) & " " & Trim(CType(cmbKlient.SelectedItem, clsKlient).Numer) & ", " & CType(cmbKlient.SelectedItem, clsKlient).KodPocztowy & " " & Trim(CType(cmbKlient.SelectedItem, clsKlient).Miejscowosc) & ", " & CType(cmbKlient.SelectedItem, clsKlient).Kraj & vbNewLine & "Telefon: " & CType(cmbKlient.SelectedItem, clsKlient).Telefon & vbNewLine & "Email: " & CType(cmbKlient.SelectedItem, clsKlient).Email
            cmbAdresWysylkiOferty.Items.Add(CType(cmbKlient.SelectedItem, clsKlient).Email)
            PobierzEmail(CType(cmbKlient.SelectedItem, clsKlient).Id)
            cmbAdresWysylkiOferty.SelectedIndex = 0
        End If
    End Sub

    Private Sub dtpDataOferty_ValueChanged(sender As Object, e As EventArgs) Handles dtpDataOferty.ValueChanged
        mvarChanged = True
    End Sub

    Private Sub dtpDataWaznosci_ValueChanged(sender As Object, e As EventArgs) Handles dtpDataWaznosci.ValueChanged
        mvarChanged = True
    End Sub

    Private Sub txtCzasRealizacji_TextChanged(sender As Object, e As EventArgs) Handles txtCzasRealizacji.TextChanged
        mvarChanged = True
    End Sub

    Private Sub cmbSposobWysylkiOferty_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbSposobWysylkiOferty.SelectedIndexChanged
        mvarChanged = True
    End Sub

    Private Sub cmbAdresWysylkiOferty_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbAdresWysylkiOferty.SelectedIndexChanged
        mvarChanged = True
    End Sub

    Private Sub txtDataKontaktu_TextChanged(sender As Object, e As EventArgs) Handles txtDataKontaktu.TextChanged
        mvarChanged = True
    End Sub

    Private Sub cmbStatusOferty_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbStatusOferty.SelectedIndexChanged
        mvarChanged = True
    End Sub

    Private Sub cmbPakowanie_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbPakowanie.SelectedIndexChanged
        If cmbPakowanie.SelectedIndex > -1 Then
            txtCenaPakowania.Text = FormatowanieLiczby(CType(cmbPakowanie.SelectedItem, clsPakowanie).Cena)
        Else
            txtCenaPakowania.Text = "0"
        End If
    End Sub

#End Region

#Region "KeyPress"

    Private Sub cmbMaterial_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cmbMaterial.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            chkPowierzony.Focus()
        End If
    End Sub

    Private Sub chkPowierzony_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles chkPowierzony.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtWymiar.Focus()
        End If
    End Sub

    Private Sub txtWymiar_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtWymiar.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtIlosc.Focus()
        End If
    End Sub

    Private Sub txtIlosc_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtIlosc.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmbJednostka.Focus()
        End If
    End Sub

    Private Sub cmbJednostka_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cmbJednostka.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmbMagazyn.Focus()
        End If
    End Sub

    Private Sub cmbMagazyn_KeyPress(sender As Object, e As KeyPressEventArgs) Handles cmbMagazyn.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtTolDolna.Focus()
        End If
    End Sub

    Private Sub txtTolDolna_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTolDolna.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtTolGorna.Focus()
        End If
    End Sub

    Private Sub txtTolGorna_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTolGorna.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtWytrzymaloscMin.Focus()
        End If
    End Sub

    Private Sub txtWytrzymaloscMin_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtWytrzymaloscMin.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtWytrzymaloscMax.Focus()
        End If
    End Sub

    Private Sub txtWytrzymaloscMax_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtWytrzymaloscMax.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtWydluzenie.Focus()
        End If
    End Sub

    Private Sub txtWydluzenie_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtWydluzenie.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            chkSwiadectwo.Focus()
        End If
    End Sub

    Private Sub chkSwiadectwo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles chkSwiadectwo.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmbPakowanie.Focus()
        End If
    End Sub

    Private Sub cmbPakowanie_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cmbPakowanie.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            chkOpakowanieDoZaplaty.Focus()
        End If
    End Sub

    Private Sub chkOpakowanieDoZaplaty_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles chkOpakowanieDoZaplaty.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtCena.Focus()
        End If
    End Sub

    Private Sub txtCena_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtCena.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            If SprawdzUjemna(txtRabat.Text) And SprawdzUjemna(txtCena.Text) Then
                txtCenaPoRabacie.Text = CStr(CDbl(txtCena.Text) - (CDbl(txtRabat.Text) * CDbl(txtCena.Text)) / 100)
                txtRabat.Focus()
            Else
                MsgBox("Podaj poprawnie wartości.")
            End If
        End If
    End Sub

    Private Sub txtRabat_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtRabat.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            If SprawdzUjemna(txtRabat.Text) And SprawdzUjemna(txtCena.Text) Then
                txtCenaPoRabacie.Text = CStr(CDbl(txtCena.Text) - (CDbl(txtRabat.Text) * CDbl(txtCena.Text)) / 100)
                cmbWaluta.Focus()
            Else
                MsgBox("Podaj poprawnie wartości.")
            End If
        End If
    End Sub

    Private Sub cmbWaluta_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cmbWaluta.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtUwagi.Focus()
        End If
    End Sub

    Private Sub txtUwagi_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtUwagi.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmdDodajPozycjeOferty.Focus()
        End If
    End Sub

    Private Sub cmdDodajPozycjeOferty_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cmdDodajPozycjeOferty.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmdZmien.Focus()
        End If
    End Sub

    Private Sub cmdZmien_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cmdZmien.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmbMaterial.Focus()
        End If
    End Sub

#End Region

    Private Sub cmdDodajEmail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDodajEmail.Click
        mvarFrmEmail = New frmEmail(CType(cmbKlient.SelectedItem, clsKlient).Id, CType(cmbKlient.SelectedItem, clsKlient).NazwaSkrocona)
        mvarFrmEmail.ShowDialog()
        cmbAdresWysylkiOferty.Items.Clear()
        cmbAdresWysylkiOferty.Items.Add(CType(cmbKlient.SelectedItem, clsKlient).Email)
        PobierzEmail(CType(cmbKlient.SelectedItem, clsKlient).Id)
        If cmbAdresWysylkiOferty.Items.Count > 1 Then
            cmbAdresWysylkiOferty.SelectedIndex = 1
        Else
            MsgBox("Podaj adres e-mail.")
        End If
    End Sub

    Private Sub cmdWyslijOferte_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdWyslijOferte.Click

        If mvarOferta.ID > 0 And Not mvarChanged Then

            Dim lvarFrm As New frmOfertyUwagi(mvarOferta.ID)
            With lvarFrm
                .ShowDialog()
            End With
           
            cmbStatusOferty.SelectedIndex = 1
            mvarWysylkaOfertyChanged = True
        Else
            MessageBox.Show("Przed wysłaniem zapisz ofertę", "WIREMET")
        End If
    End Sub

    Private Sub cmdUtworzZlecenie_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdUtworzZlecenie.Click
        If mvarOferta.ID > 0 Then
            If mvarOferta.StatusOfertyId > 1 Then
                Dim lvarId As Integer
                lvarId = mvarOferta.ID
                Dim lvarFrm As New frmZlecenia(lvarId, 3)
                lvarFrm.MdiParent = mdiMain.MdiParent
                lvarFrm.Show()
            Else
                MessageBox.Show("Przed utworzeniem zlecenia wyślij ofertę", "WIREMET")
            End If
        Else
            MessageBox.Show("Przed utworzeniem zlecenia zapisz ofertę", "WIREMET")
        End If
    End Sub

    Private Sub cmdAnuluj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAnuluj.Click
        mvarChanged = False
        Me.Close()
    End Sub

    Private Sub cmdKlient_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdKlient.Click
        If cmbKlient.SelectedIndex = -1 Then
            mvarFrmSzukaniaKlienta = New frmKlientSzukanie(True, -1)
            mvarFrmSzukaniaKlienta.MdiParent = Me.MdiParent
            mvarFrmSzukaniaKlienta.Show()
        Else
            mvarFrmSzukaniaKlienta = New frmKlientSzukanie(True, CType(cmbKlient.SelectedItem, clsKlient).Id)
            mvarFrmSzukaniaKlienta.MdiParent = Me.MdiParent
            mvarFrmSzukaniaKlienta.Show()
        End If

        cmbKlient.Items.Clear()
        PobierzKlientow()
        If mvarFrmSzukaniaKlienta.dgvInformacje.SelectedRows.Count > 0 Then
            For lvarI As Integer = 0 To cmbKlient.Items.Count - 1
                If CType(cmbKlient.Items(lvarI), clsKlient).Id = CInt(mvarFrmSzukaniaKlienta.dgvInformacje.SelectedRows.Item(0).Cells("colIdKlienta").Value) Then
                    cmbKlient.SelectedIndex = lvarI
                    Exit For
                End If
            Next
        End If

    End Sub

   
    Private Sub frmOferty_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        If Not mvarWyznTylkoDoOdczytu And Not mvarWyznNowaOferta Then
            mvarBlokowanie.Unlock()
        End If
        mvarDbHolder.Close()
    End Sub

    Private Sub frmOferty_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If mvarChanged Or mvarWysylkaOfertyChanged Then
            Select Case MsgBox("Czy zapisać ofertę do bazy?", MsgBoxStyle.YesNo, "WIREMET")
                Case MsgBoxResult.No
                Case MsgBoxResult.Yes
                    Zapisz()
                    If mvarCancel = True Then
                        e.Cancel = True
                    End If
            End Select
        End If
    End Sub


    Private Sub txtCzasRealizacji_LostFocus(sender As Object, e As EventArgs) Handles txtCzasRealizacji.LostFocus

        If txtCzasRealizacji.Text <> String.Empty Then
            If IsNumeric(txtCzasRealizacji.Text) Then
                If CInt(txtCzasRealizacji.Text) < 0 Or InStr(txtCzasRealizacji.Text, ",") <> 0 Then
                    MsgBox("Podaj termin realizacji w postaci liczby całkowitej.")
                    txtCzasRealizacji.Focus()
                End If
            Else
                MsgBox("Podaj termin realizacji w postaci liczby całkowitej.")
                txtCzasRealizacji.Focus()
            End If
        End If

    End Sub

End Class